/**
 * @file           : receive_process.cpp
 * @author         : fwy
 * @brief          :
 * @email          : 2643660853@qq.com
 * @date           : 23-1-18 上午1:06
 */

#include <ros/ros.h>
#include "serial_data.h"
#include "msg_process/receive_data.h"

using namespace std;
msg_process::receive_data temp_data;

int main(int argc, char **argv)
{
  // 初始化节点
  ros::init(argc, argv, "receive_process");
  // 句柄
  ros::NodeHandle nh;
  // 将串口收到的数据发送到serial_receive_data话题上
  ros::Publisher serial_receive_data_pub = nh.advertise<msg_process::receive_data>("/serial_receive_data", 1);
  ros::Rate loop_rate(100);
  while (nh.ok())
  {
    // 读取串口数据
    TransferData serial_data = serialdata.read();
    // 类型转换 TransferData转换为 serial_process::receive_data以发布
    // 底盘此时的yaw角
    temp_data.yaw = serial_data.rotation.yaw;
    // 哨兵的跟随模式
    temp_data.tracker_bit = serial_data.data_u8[0];
    // 己方颜色
    temp_data.color = serial_data.data_u8[1];
    // 目的地
    temp_data.target_destination = serial_data.data_u8[2];
    // 模式切换位
    temp_data.change_mode = serial_data.data_u8[3];
    // 云台是否有目标
    temp_data.target_mode = serial_data.data_u8[4];
    // 是否开启建图
    temp_data.is_mapping = serial_data.data_u8[5];
    // 目的地的x坐标
    temp_data.goalx = serial_data.data_f[0];
    // 目的地的y坐标
    temp_data.goaly = serial_data.data_f[1];
    // 当前比赛剩余时间
    temp_data.time = serial_data.data_f[2];
    // 己方哨兵血量
    temp_data.hp_sentry = serial_data.data_f[3];
    // 己方前哨站血量
    temp_data.hp_outpost = serial_data.data_f[4];
    // 发弹量
    temp_data.total_emission = serial_data.data_f[5];
    ROS_WARN("++++++++++++++++++++++++++++++++++++++");
    ROS_WARN("yaw : %f ", temp_data.yaw);
    ROS_WARN("tracker_bit : %d", temp_data.tracker_bit);
    ROS_WARN("color : %d", temp_data.color);
    ROS_WARN("target_destination : %d", temp_data.target_destination);
    ROS_WARN("change_mode : %d", temp_data.change_mode);
    ROS_WARN("target_mode : %d", temp_data.target_mode);
    ROS_WARN("is_mapping : %d", temp_data.is_mapping);
    ROS_WARN("goalx : %f", temp_data.goalx);
    ROS_WARN("goaly : %f", temp_data.goaly);
    ROS_WARN("time : %f", temp_data.time);
    ROS_WARN("hp_sentry : %f", temp_data.hp_sentry);
    ROS_WARN("hp_outpost : %f", temp_data.hp_outpost);
    ROS_WARN("total_emission : %f", temp_data.total_emission);
    ROS_WARN("++++++++++++++++++++++++++++++++++++++");
    serial_receive_data_pub.publish(temp_data);
    loop_rate.sleep();
  }
}
